package priv.wangy.micro.common.utils.secret;

import org.apache.commons.codec.digest.DigestUtils;

/**
 * @author wangy
 * @since 2023-10-12
 */
public class Sha512Util {


    /**
     * SHA512编码
     *
     * @param code 目标数据
     * @return 离散结果
     * @author wangy
     * @since 2023-10-12
     */
    private static byte[] sha512(String code) {
        return DigestUtils.sha512(code);
    }

    /**
     * SHA512编码
     * 响应16进制字符串
     *
     * @param code 目标数据
     * @return 离散结果
     * @author wangy
     * @since 2023-10-12
     */
    public static String sha512Hex(String code) {
        byte[] sha512Bytes = sha512(code);
        StringBuilder sb = new StringBuilder();
        for (byte sha512Byte : sha512Bytes) {
            String hex = Integer.toHexString(0xff & sha512Byte);
            if (hex.length() == 1) {
                sb.append('0');
            }
            sb.append(hex);
        }
        //返回值字母转下大写
        return sb.toString().toUpperCase();
    }

    /**
     * 对密码进行SHA512编码
     * 使用account加盐
     *
     * @param pwd     密码
     * @param account 账号
     * @return 离散结果
     * @author wangy
     * @since 2023-10-12
     */
    public static String getPasswordSha512(String pwd, String account) {
        String a1 = sha512Hex(pwd) + account;
        return sha512Hex(a1);
    }

}
